package com.lzy.service;


import java.util.Date;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.lzy.dao.im.IMTaskDao;
import com.lzy.entity.IMTask;
import com.lzy.util.CommUtil;
import com.lzy.util.Constants;
import com.lzy.util.DateUtil;
import com.lzy.util.Page;
import com.lzy.util.PageRequest;

@Service
@Transactional
public class TaskServiceImpl implements TaskService{

	private IMTaskDao imTaskDao;
	
	@Autowired
	public void setImTaskDao(IMTaskDao imTaskDao) {
		this.imTaskDao = imTaskDao;
	}
	
	@Transactional(readOnly=true)
	public Page<IMTask> queryTaskList(PageRequest pageRequest,int id) {
		String states ;
		if(id==1){
			states = "1,2";
		}else{
			states = "3,4";
		}
		return imTaskDao.getIMTaskListByState(pageRequest,states);
	}
	
	public void delIMTask(int... ids) {
		this.imTaskDao.delIMTask(ids);
	}
	
	public void addIMTask(Map<String,Object> params) {
		IMTask imTask = new IMTask();
		
		parseParams(params, imTask);
		
		this.imTaskDao.addIMTask(imTask);
	}
	
	public IMTask queryIMTask(int taskId) {
		return this.imTaskDao.queryIMTask(taskId);
	}
	
	public void updateIMTask(Map<String,Object> params) {
		
		int taskId = CommUtil.Param2Int(params, "taskId");
		
		IMTask imTask = this.imTaskDao.queryIMTask(taskId);
		
		parseParams(params,imTask);
		
		this.imTaskDao.updateIMTask(imTask);
	}
	
	private void parseParams(Map params,IMTask imTasks){
		
		// 创建时间
		Date date = new Date() ;
		imTasks.setCreateTime(date);
		// 过期时间
		String outTime = params.get("outTime").toString();
		String outTime_hour = CommUtil.Param2String(params, "outTime_hour");
		String outTime_minute = params.get("outTime_minute").toString();
		String outTime_second = params.get("outTime_second").toString();
		
		imTasks.setOutTime(DateUtil.simpleString2Date(outTime,outTime_hour,outTime_minute,outTime_second));
		
		// 任务名称
		imTasks.setTaskName(CommUtil.Param2String(params, "taskName"));
		
		if(!params.containsKey("taskId")){
			// 任务类型
			imTasks.setTaskType(Integer.valueOf(params.get("taskType").toString()));
		}
		
		// 账号
		imTasks.setLocalId(params.get("localId").toString());
		// 目标账号
		imTasks.setPeerId(params.get("peerId").toString());
		
		int startFlag = CommUtil.Param2Int(params, "startFlag");;
		if(startFlag == 1){
			imTasks.setStatus(Constants.TaskType.waiting.value());
		}else{
			imTasks.setStatus(Constants.TaskType.created.value());
		}
		// 发送内容
		imTasks.setSendContent(params.get("sendContent").toString());
		//备注
		imTasks.setRemark(params.get("remark").toString());
	}
	
	public void startIMTask(int... ids) {
		this.imTaskDao.startIMTask(ids);
	}
	
	public void stopIMTask(int... ids) {
		this.imTaskDao.stopIMTask(ids);
	}
	
}
